"""
1)爬取豆瓣电影Top250
    第1页：
    https://movie.douban.com/top250
    第2页：
    https://movie.douban.com/top250?start=25
    第3页：
    https://movie.douban.com/top250?start=50
2)解析出：电影名、评分、链接
3)保存在文件
"""
import requests
from bs4 import BeautifulSoup


class DouPan:
    def __init__(self):
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/86.0.4240.183 Safari/537.36"}
        self.base_url = 'https://movie.douban.com/top250?start='

    def load_parse_page(self):
        # 构造10页的完整url
        for i in range(0, 10):
            # 构造完整url
            url = self.base_url + str(i * 25)
            # 发送请求，得到html数据
            response = requests.get(url, headers=self.headers)
            html = response.content.decode()
            # print(html)
            # 解析：电影名、评分、链接
            soup = BeautifulSoup(html, 'lxml')
            # 找到满足的所有信息
            list1 = soup.find_all('div', {'class': 'info'})
            # print(list1)
            # 解析每一页的25条记录
            for node in list1:
                # node就是一条数据
                # find() 找到满足的第一条
                # find(): 属性是字典结构
                # movie = node.find('span', {'class': 'title'}).text
                # select(): 参数结构用选择器，select的结果是多条，[0]第一条
                # movie = node.select('span[class="title"]')[0].text
                movie = node.select('span.title')[0].text
                score = node.find('span', {'class': 'rating_num'}).text + '分'
                link = node.find('a')['href']
                data_dict = {'电影': movie, '评分': score, '链接': link}
                # 保存在文件(写入的是字典)，'a'追加写入，'w'覆盖写入
                with open('movie.txt', 'a', encoding='utf-8') as f:
                    f.write(data_dict.__str__() + "\n")


if __name__ == '__main__':
    doupan = DouPan()
    doupan.load_parse_page()
